package com.share.ai.langchain4j.config;

import dev.langchain4j.community.model.dashscope.QwenEmbeddingModel;
import dev.langchain4j.rag.content.retriever.ContentRetriever;
import dev.langchain4j.rag.content.retriever.EmbeddingStoreContentRetriever;
import dev.langchain4j.store.embedding.EmbeddingStore;
import dev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RagConfig {

    //创建一个内存向量数据库
    @Bean
    public EmbeddingStore embeddingStore() {
        return new InMemoryEmbeddingStore();
    }


    /**
     * 创建一个向量检索器
     *
     * @param embeddingStore     向量数据库
     * @param qwenEmbeddingModel 向量模型  （也就是把汉字变成数字的变换） ---stater 自动装配
     * @return
     */
    @Bean
    public ContentRetriever contentRetriever(EmbeddingStore embeddingStore, QwenEmbeddingModel qwenEmbeddingModel) {
        EmbeddingStoreContentRetriever build = EmbeddingStoreContentRetriever.builder()
                .embeddingStore(embeddingStore)
                .embeddingModel(qwenEmbeddingModel)
                .maxResults(5)//输出5个结果
                .minScore(0.6)//相似度在0.6以上
                .build();
        return build;
    }
}
